#include "widget.h"
#include "ui_widget.h"

Widget::Widget(QWidget *parent)
    : QWidget(parent)
    , ui(new Ui::Widget)
{
    ui->setupUi(this);

    // 连接信号槽，通过槽函数更新界面
    connect(&thread, &Thread::notify, this, &Widget::handle);

    // 启动线程
    thread.start();
}

Widget::~Widget() {
    // 避免进程尚未结束, 就退出主程序
    // 原因: 当我们关闭窗口时, 析构函数还没有执行完, main 还在执行
    // 请求线程退出
    if (thread.isRunning()) {
        thread.quit();
        thread.wait(); // 主线程进入等待, 等待子线程退出
    }
    qDebug() << "结束";
    delete ui;
}

void Widget::handle()
{
    // 此处修改界面内容
    int val = ui->lcdNumber->intValue();
    val--;
    ui->lcdNumber->display(val);
}


